Python 如何正确地进行交叉验证 您所在的位置:网站首页 python 交叉验证 Python 如何正确地进行交叉验证

Python 如何正确地进行交叉验证

2023-03-11 06:11| 来源: 网络整理| 查看: 265

Python 如何正确地进行交叉验证

python scikit-learn

Python 如何正确地进行交叉验证,python,scikit-learn,cross-validation,Python,Scikit Learn,Cross Validation,我一直在尝试使用Python和scikit学习工具包训练一个ML分类器 首先,我在分割数据集时应用了我自己的阈值(例如int(len(X)*0.75)),并在打印我的度量时得到了这个结果: precision recall f1-score support 1 0.63 0.96 0.76 23 2 0.96 0.64 0.77 36 avg /

我一直在尝试使用Python和scikit学习工具包训练一个ML分类器 首先,我在分割数据集时应用了我自己的阈值(例如int(len(X)*0.75)),并在打印我的度量时得到了这个结果: precision recall f1-score support 1 0.63 0.96 0.76 23 2 0.96 0.64 0.77 36 avg / total 0.83 0.76 0.76 59 然后,为了更详细地了解模型的准确性,我使用了交叉验证:分数=交叉验证。交叉验证分数(X,y,cv=10)并得到以下分数: 交叉评分=[0.66666667 0.79166667 0.45833333 0.70833333 0.52173913 0.52173913 0.47826087 0.47826087 0.52173913 0.47826087] 准确度:0.56(标准偏差:+/-0.22),其中准确度等于平均值(分数) 有人能告诉我如何正确解释这些分数吗?我理解在使用交叉验证时如何分割数据集,以便在数据集的整个范围内观察模型的准确性,但我想知道更多 例如,是否有一种方法可以将其拆分并达到尽可能高的精度(例如,0.79166667),如果是,我如何做到这一点 我想这是因为在我的数据集中有一个分裂,当使用这些数据训练模型时,可以产生更接近的预测,对吗 有没有办法降低相对较高的标准偏差 谢谢你抽出时间 是否有办法将其拆分并达到尽可能高的精度(例如0.79166667),如果有,我如何做到 可能吧,但这只意味着通过拟合理想分割的训练部分得到的模型,在理想分割的验证部分具有很高的准确性。这就是所谓的过度拟合,也就是说,你得到的模型只针对特定数据进行了优化,但不能很好地用新数据进行推广 我想这是因为我的数据集中有一个分裂 当使用这些数据训练模型时,可以产生更精确的预测 是的,对该特定分割的验证部分进行更接近的预测。 有没有办法降低相对较高的标准偏差 是的,通过选择方差较小的模型(例如,参数较少的线性模型)。但请注意,在这种情况下,您可能会失去预测准确性,这就是所谓的偏差-方差权衡 通常,您只需要寻找具有良好平均交叉验证分数(mCVS)的模型。但是如果你的模型都有相同的MCV,那么你会选择标准偏差最小的。例如,在金融领域,波动性和不确定性是不需要的,根据夏普比率选择模型,夏普比率类似于平均值/标准差。但在以MCV为获胜标准的Kaggle竞赛中,您显然希望将其最大化,而忽略标准差

如果你担心数据集中的变化不允许你有意义地比较模型,那么你可以考虑在拆分之前使用不同数量的分割和数据删除。

试图优化数据分裂的方式来提高交叉验证分数没有多大意义。交叉验证的重点是看你的模型在它不知道的数据上做得有多好;以自定义方式拆分它只是为了提高分数,这只是在愚弄自己。你应该以某种先验的方式(例如,纯粹的随机抽样、跨班级分层等)确定分数,并通过改进模型本身来尝试最大化分数。谢谢你的回答!我真的很清楚,这正是我想知道的。干杯


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有